package com.ctb.dao;

import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import oracle.jdbc.OracleTypes;

import org.apache.log4j.Logger;

import utiles.AppProperties;
import utiles.ConexionPool;

import com.ctb.dto.ChequeDTO;

public class ChequeDAO {
	private static Logger log = Logger.getLogger(ClienteDAO.class);
	String pkgVar = (AppProperties.getProperty("aplicacion", "PACKAGE"));
	
		
	public  List<ChequeDTO> getChequeFecha(String idSede, String Fini, String Ffin) throws SQLException, IOException{
		
		Connection conn = ConexionPool.getConnectionPool();	
    	
		List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
		try {
			String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getChequeFecha(?,?,?,?) }"; 	       
			CallableStatement  stmt = conn.prepareCall(query);
			stmt.setString(1, idSede);			
			stmt.setString(2, Fini);
			stmt.setString(3, Ffin);
			stmt.registerOutParameter(4, OracleTypes.CURSOR);
			stmt.execute();
			ResultSet rs = (ResultSet)stmt.getObject(4);
			while (rs.next()) {
				ChequeDTO chequeDTO = new ChequeDTO();
				chequeDTO.setIdDocumento(rs.getString(1));
				chequeDTO.setSede(rs.getString(2));
				chequeDTO.setFechaEmi(rs.getString(3));
				chequeDTO.setCuenta(rs.getString(4));
				chequeDTO.setNumeroCheque(rs.getString(5));
				chequeDTO.setKbanco(rs.getString(6));
				chequeDTO.setBanco(rs.getString(7));
				chequeDTO.setFechaVenc(rs.getString(8));
				chequeDTO.setTotal(rs.getString(9));
	
		    	listRetorno.add(chequeDTO);			    	
			}

			rs.close();
			stmt.close();
		} catch (SQLException ex) {  
			log.error("Error PKG_CON_CHEQUE.getChequeFecha SQLException: " +ex.getMessage());
			System.out.println(ex.getMessage());
		} finally {			
			conn.close();
			conn = null;
		}
		return listRetorno;
	}
	
public  String getChequeFecha2(String idSede, String Fini, String Ffin) throws SQLException, IOException{
		
		Connection conn = ConexionPool.getConnectionPool();	
    	String salida="-1";
		try {
			String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getChequeFecha2(?,?,?,?) }"; 	       
			CallableStatement  stmt = conn.prepareCall(query);
			stmt.setString(1, idSede);			
			stmt.setString(2, Fini);
			stmt.setString(3, Ffin);
			stmt.registerOutParameter(4, OracleTypes.VARCHAR);
			stmt.execute();
			salida=stmt.getString(4);
			stmt.close();
		} catch (SQLException ex) {  
			log.error("Error PKG_CON_CHEQUE.getChequeFecha2 SQLException: " +ex.getMessage());
			System.out.println(ex.getMessage());
		} finally {			
			conn.close();
			conn = null;
		}
		return salida;
	}
	
public  List<ChequeDTO> getChequeBuscar(String rutG, String numeroChq, String Banco) throws SQLException, IOException{
		
		Connection conn = ConexionPool.getConnectionPool();	
    	
		List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
		try {
			String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getChequeBusqueda(?,?,?,?) }"; 	       
			CallableStatement  stmt = conn.prepareCall(query);
			stmt.setString(1, rutG);			
			stmt.setString(2, numeroChq);
			stmt.setString(3, Banco);
			stmt.registerOutParameter(4, OracleTypes.CURSOR);
			stmt.execute();
			ResultSet rs = (ResultSet)stmt.getObject(4);
			while (rs.next()) {
				ChequeDTO chequeDTO = new ChequeDTO();
				chequeDTO.setIdCheque(rs.getString(1));
				chequeDTO.setIdDocumento(rs.getString(2));
				chequeDTO.setSede(rs.getString(3));
				chequeDTO.setFechaEmi(rs.getString(4));
				chequeDTO.setRutg(rs.getString(5));
				chequeDTO.setNumeroCheque(rs.getString(6));
				chequeDTO.setKbanco(rs.getString(7));
				chequeDTO.setBanco(rs.getString(8));
				chequeDTO.setFechaVenc(rs.getString(9));
				chequeDTO.setTotal(rs.getString(10));
				chequeDTO.setFechaDep(rs.getString(11));
				chequeDTO.setEstado(rs.getString(12));
		    	listRetorno.add(chequeDTO);			    	
			}
			rs.close();
			stmt.close();
		} catch (SQLException ex) {  
			log.error("Error PKG_CON_CHEQUE.getChequeBusqueda SQLException: " +ex.getMessage());
			System.out.println(ex.getMessage());
		} finally {			
			conn.close();
			conn = null;
		}
		return listRetorno;
	}

public  List<ChequeDTO> getDepositarChq(String fini, String ffin, String Banco, String Sede) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getChequeADepositar(?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, fini);			
		stmt.setString(2, ffin);
		stmt.setString(3, Banco);
		stmt.setString(4, Sede);
		stmt.registerOutParameter(5, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(5);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setIdCheque(rs.getString(1));
			chequeDTO.setBanco(rs.getString(2));
			chequeDTO.setTotal(rs.getString(3));
			chequeDTO.setNumeroCheque(rs.getString(4));
			
	    	listRetorno.add(chequeDTO);			    	
		}
		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getChequeADepositar SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}


public  String setRegistraCheque(String Usuario, String fini, String ffin,  String Sede) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	String exito="";
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.setRegistrarCheque(?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Usuario);			
		stmt.setString(2, ffin);
		stmt.setString(3, ffin);
		stmt.setString(4, Sede);
		stmt.registerOutParameter(5, OracleTypes.VARCHAR);
		stmt.execute();
        exito=stmt.getString(5);

		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.setRegistrarCheque SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return exito;
}

public  List<ChequeDTO> getEstadoFechaDep(String Rutg, String Banco, String Cheque) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getEstadoFechaDep(?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Rutg);			
		stmt.setString(2, Banco);
		stmt.setString(3, Cheque);
		stmt.registerOutParameter(4, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(4);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setNumeroCheque(rs.getString(1));
			chequeDTO.setEstado(rs.getString(2));
			chequeDTO.setFechaDep(rs.getString(3));
	    	listRetorno.add(chequeDTO);			    	
		}
		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getEstadoFechaDep SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}

public  String setModificaCheque(String Nref, String IdChq, String Rutg,  String IdBanco,  String Serie,  String FecVen,  String Estado,  String FecDep) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	String exito="";
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.setModificaCheque(?,?,?,?,?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Nref);			
		stmt.setString(2, IdChq);
		stmt.setString(3, Rutg);
		stmt.setString(4, IdBanco);
		stmt.setString(5, Serie);
		stmt.setString(6, FecVen);
		stmt.setString(7, Estado);
		stmt.setString(8, FecDep);
		stmt.registerOutParameter(9, OracleTypes.VARCHAR);
		stmt.execute();
        exito=stmt.getString(9);

		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.setModificaCheque SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return exito;
}

public  String setDepositarCheque(String IdChq, String Estado,  String FecDep, String idUsuario) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	String exito="";
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.setDepositarCheque(?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, IdChq);			
		stmt.setString(2, Estado);
		stmt.setString(3, FecDep);
		stmt.setString(4, idUsuario);
		stmt.registerOutParameter(5, OracleTypes.VARCHAR);
		stmt.execute();
        exito=stmt.getString(5);

		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.setDepositarCheque SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return exito;
}

public  List<ChequeDTO> getChequeProtesto(String Serie, String Rutg, String Banco, String idBol) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getChequeProtesto(?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Serie);			
		stmt.setString(2, Rutg);
		stmt.setString(3, Banco);
		stmt.setString(4, idBol);
		stmt.registerOutParameter(5, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(5);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setTipo(rs.getString(1));
			chequeDTO.setCantidad(rs.getString(2));
			chequeDTO.setNumeroCheque(rs.getString(3));
			chequeDTO.setFechaEmi(rs.getString(4));
			chequeDTO.setRutg(rs.getString(5));
			chequeDTO.setFechaVenc(rs.getString(6));
			chequeDTO.setIdSede(rs.getString(7));
			chequeDTO.setSede(rs.getString(8));
			chequeDTO.setKbanco(rs.getString(9));
			chequeDTO.setBanco(rs.getString(10));
			chequeDTO.setTotal(rs.getString(11));
			chequeDTO.setEstado(rs.getString(12));
			chequeDTO.setNumProt(rs.getInt(13));
			chequeDTO.setNombre(rs.getString(14));
			chequeDTO.setMotivo(rs.getString(15));

	    	listRetorno.add(chequeDTO);			    	
		}

		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getChequeProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}

public  List<ChequeDTO> getRegistroChequeProtesto(String Serie, String Rutg, String Banco) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getRegistroProtesto(?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Serie);			
		stmt.setString(2, Rutg);
		stmt.setString(3, Banco);
		stmt.registerOutParameter(4, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(4);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setRutp(rs.getString(1));
			chequeDTO.setNombre(rs.getString(2));
			chequeDTO.setIdDocumento(rs.getString(3));
			chequeDTO.setFechaEmi(rs.getString(4));

	    	listRetorno.add(chequeDTO);			    	
		}

		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getRegistroProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}

public List<ChequeDTO> getMotivoProtesto() throws SQLException, IOException{
	//ConexionPool connDao = new ConexionPool();
	Connection conn = ConexionPool.getConnectionPool();	
	//Connection conn = ((javax.sql.PooledConnection)ConexionPool.getConnectionPool()).getConnection();
	
	List<ChequeDTO> listComuna = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_COMBOS.getMotivoProtesto(?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.registerOutParameter(1, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(1);

		while (rs.next()) {
			ChequeDTO MotivosDTO = new ChequeDTO();
			MotivosDTO.setIdDocumento(rs.getString(1));	
			MotivosDTO.setTipo(rs.getString(2));
			listComuna.add(MotivosDTO);
		}
		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_COMBOS.getMotivoProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {
		//ConexionPool.desconectaPool(conn);
		conn.close();
		conn = null;
	}
	return listComuna;

}

public  String setRegistraChequeProtesto(String IdSededoc, String IdSedeUsu, String NumChq, String IdBanco, String Cantidad, String FecPro, String IdMotivo, String IdUsuario,  String Rutg, String NumPro, String Rutp, String NRef) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	String exito="";
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.setRegistrarProtesto(?,?,?,?,?,?,?,?,?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, IdSededoc);
		stmt.setString(2, IdSedeUsu);
		stmt.setString(3, NumChq);
		stmt.setString(4, IdBanco);
		stmt.setString(5, Cantidad);
		stmt.setString(6, FecPro);
		stmt.setString(7, IdMotivo);
		stmt.setString(8, IdUsuario);
		stmt.setString(9, Rutg);
		stmt.setString(10, NumPro);
		stmt.setString(11, Rutp);
		stmt.setString(12, NRef);
		stmt.registerOutParameter(13, OracleTypes.INTEGER);
		stmt.execute();
        exito=stmt.getString(13);

		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.setRegistrarProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return exito;
}

public  String setNewGirador(String Rutg, String Apat, String Amat, String Nombre, String IdUsu, String Fon1, String Fon2, String IdSede) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	String exito="";
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.setIngresaNewGirador(?,?,?,?,?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Rutg);
		stmt.setString(2, Apat);
		stmt.setString(3, Amat);
		stmt.setString(4, Nombre);
		stmt.setString(5, IdUsu);
		stmt.setString(6, Fon1);
		stmt.setString(7, Fon2);
		stmt.setString(8, IdSede);
		stmt.registerOutParameter(9, OracleTypes.INTEGER);
		stmt.execute();
        exito=stmt.getString(9);

		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.setIngresaNewGirador SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return exito;
}


public String getNumeroProtesto() throws SQLException, IOException{
	Connection conn = ConexionPool.getConnectionPool();	
	String exito="";

	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getNumeroProtesto(?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.registerOutParameter(1, OracleTypes.INTEGER);
		stmt.execute();
		exito=stmt.getString(1);

		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getNumeroProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {
		conn.close();
		conn = null;
	}
	return exito;

}

public  List<ChequeDTO> getBuscarProtesto(String NProtesto) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getBuscarProtesto(?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, NProtesto);			
		stmt.registerOutParameter(2, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(2);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setIdCheque(rs.getString(1));
			chequeDTO.setIdSede(rs.getString(2));
			chequeDTO.setKbanco(rs.getString(3));
			chequeDTO.setNumeroCheque(rs.getString(4));
			chequeDTO.setFechaPro(rs.getString(5));
			chequeDTO.setTotal(rs.getString(6));
			chequeDTO.setTipo(rs.getString(7));
			chequeDTO.setEstado(rs.getString(8));
			chequeDTO.setRutg(rs.getString(9));
			chequeDTO.setRutp(rs.getString(10));
			chequeDTO.setIdDocumento(rs.getString(11));
			chequeDTO.setFechaEmi(rs.getString(12));
			chequeDTO.setIdOrigen(rs.getString(13));
			chequeDTO.setOrigen(rs.getString(14));

	    	listRetorno.add(chequeDTO);			    	
		}

		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getBuscarProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}

public  List<ChequeDTO> getRegistroPagoProtesto(String Numero, String Banco, String Rutg) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getRegistrarPagoProtesto(?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Numero);			
		stmt.setString(2, Banco);
		stmt.setString(3, Rutg);
		stmt.registerOutParameter(4, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(4);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setRutp(rs.getString(1));
			chequeDTO.setIdCheque(rs.getString(2));
			chequeDTO.setNombre(rs.getString(3));
			chequeDTO.setNumeroCheque(rs.getString(4));
			chequeDTO.setTotal(rs.getString(5));
			chequeDTO.setFechaPro(rs.getString(6));
			chequeDTO.setIdUsuario(rs.getString(7));
			chequeDTO.setUsuario(rs.getString(8));
			chequeDTO.setKbanco(rs.getString(9));
			chequeDTO.setBanco(rs.getString(10));
			chequeDTO.setSede(rs.getString(11));
			chequeDTO.setTipo(rs.getString(12));
			chequeDTO.setEstado(rs.getString(13));

	    	listRetorno.add(chequeDTO);			    	
		}

		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getRegistrarPagoProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}

public List<ChequeDTO> getFormaPagoProtesto() throws SQLException, IOException{
	//ConexionPool connDao = new ConexionPool();
	Connection conn = ConexionPool.getConnectionPool();	
	//Connection conn = ((javax.sql.PooledConnection)ConexionPool.getConnectionPool()).getConnection();
	
	List<ChequeDTO> listComuna = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_COMBOS.getFormaPago(?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.registerOutParameter(1, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(1);

		while (rs.next()) {
			ChequeDTO MotivosDTO = new ChequeDTO();
			MotivosDTO.setIdDocumento(rs.getString(1));	
			MotivosDTO.setTipo(rs.getString(2));
			listComuna.add(MotivosDTO);
		}
		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_COMBOS.getFormaPago SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {
		//ConexionPool.desconectaPool(conn);
		conn.close();
		conn = null;
	}
	return listComuna;

}

public List<ChequeDTO> getEstadoProtesto() throws SQLException, IOException{
	//ConexionPool connDao = new ConexionPool();
	Connection conn = ConexionPool.getConnectionPool();	
	//Connection conn = ((javax.sql.PooledConnection)ConexionPool.getConnectionPool()).getConnection();
	
	List<ChequeDTO> listComuna = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_COMBOS.getEstadoProtesto(?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.registerOutParameter(1, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(1);

		while (rs.next()) {
			ChequeDTO MotivosDTO = new ChequeDTO();
			MotivosDTO.setIdDocumento(rs.getString(1));	
			MotivosDTO.setTipo(rs.getString(2));
			listComuna.add(MotivosDTO);
		}
		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_COMBOS.getEstadoProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {
		//ConexionPool.desconectaPool(conn);
		conn.close();
		conn = null;
	}
	return listComuna;

}

public List<ChequeDTO> getOrigenProtesto() throws SQLException, IOException{
	//ConexionPool connDao = new ConexionPool();
	Connection conn = ConexionPool.getConnectionPool();	
	//Connection conn = ((javax.sql.PooledConnection)ConexionPool.getConnectionPool()).getConnection();
	
	List<ChequeDTO> listComuna = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_COMBOS.getOrigenProtesto(?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.registerOutParameter(1, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(1);

		while (rs.next()) {
			ChequeDTO MotivosDTO = new ChequeDTO();
			MotivosDTO.setIdDocumento(rs.getString(1));	
			MotivosDTO.setTipo(rs.getString(2));
			listComuna.add(MotivosDTO);
		}
		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_COMBOS.getOrigenProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {
		//ConexionPool.desconectaPool(conn);
		conn.close();
		conn = null;
	}
	return listComuna;

}


public  List<ChequeDTO> getAbonoProtesto(String idCheque) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getAbonoProtesto(?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, idCheque);			
		stmt.registerOutParameter(2, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(2);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setIdCheque(rs.getString(1));
			chequeDTO.setFechaEmi(rs.getString(2));
			chequeDTO.setTipo(rs.getString(3));
			chequeDTO.setNumeroCheque(rs.getString(4));
			chequeDTO.setBanco(rs.getString(5));
			chequeDTO.setFechaVenc(rs.getString(6));
			chequeDTO.setRutg(rs.getString(7));
			chequeDTO.setTotal(rs.getString(8));
	    	listRetorno.add(chequeDTO);			    	
		}

		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getAbonoProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}

public  String setIngresaAbonoPro(String IdCheque, String Femi, Integer Monto, String IdPago, String NumCheque, String IdBanco, String FecVenc, String Rutg, String IdUsuario, String IdSuc, Integer Saldo) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	String exito="";
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.setIngresaAbonoProtesto(?,?,?,?,?,?,?,?,?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, IdCheque);
		stmt.setString(2, Femi);
		stmt.setInt(3, Monto);
		stmt.setString(4, IdPago);
		stmt.setString(5, NumCheque);
		stmt.setString(6, IdBanco);
		stmt.setString(7, FecVenc);
		stmt.setString(8, Rutg);
		stmt.setString(9, IdUsuario);
		stmt.setString(10, IdSuc);
		stmt.setInt(11, Saldo);
		stmt.registerOutParameter(12, OracleTypes.INTEGER);
		stmt.execute();
        exito=stmt.getString(12);

		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.setIngresaAbonoProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return exito;
}


public  List<ChequeDTO> getInformeProtesto(String Rut, String Num_cheque, String Estado) throws SQLException, IOException{
	
	Connection conn = ConexionPool.getConnectionPool();	
	List<ChequeDTO> listRetorno = new ArrayList<ChequeDTO>();
	try {
		String query = "{ call "+pkgVar+".PKG_CON_CHEQUE.getInformeProtesto(?,?,?,?) }"; 	       
		CallableStatement  stmt = conn.prepareCall(query);
		stmt.setString(1, Rut);
		stmt.setString(2, Num_cheque);
		stmt.setString(3, Estado);
		stmt.registerOutParameter(4, OracleTypes.CURSOR);
		stmt.execute();
		ResultSet rs = (ResultSet)stmt.getObject(4);
		while (rs.next()) {
			ChequeDTO chequeDTO = new ChequeDTO();
			chequeDTO.setIdCheque(rs.getString(1));
			chequeDTO.setSede(rs.getString(2));
			chequeDTO.setBanco(rs.getString(3));
			chequeDTO.setNumeroCheque(rs.getString(4));
			chequeDTO.setFechaPro(rs.getString(5));
			chequeDTO.setMotivo(rs.getString(6));
			chequeDTO.setTotal(rs.getString(7));
			chequeDTO.setCantidad(rs.getString(8));
			chequeDTO.setTotal2(rs.getString(9));
	    	listRetorno.add(chequeDTO);			    	
		}

		rs.close();
		stmt.close();
	} catch (SQLException ex) {  
		log.error("Error PKG_CON_CHEQUE.getInformeProtesto SQLException: " +ex.getMessage());
		System.out.println(ex.getMessage());
	} finally {			
		conn.close();
		conn = null;
	}
	return listRetorno;
}



}
